package com.chen.controller;

import com.chen.pojo.common.PageResult;
import com.chen.pojo.dto.RegionDto;
import com.chen.pojo.vo.RegionVo;
import com.chen.service.RegionService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author chen
 * @version 1.0
 * @create_date 2025/8/17
 * 区域管理业务
 */
@Slf4j
@RestController
@RequestMapping("/api/vm-service/region")
@Tag(name = "区域管理接口", description = "区域相关操作接口")
public class RegionController {
    @Autowired
    private RegionService regionService;

    /**
     * 分页查询
     *
     * @param pageIndex 起始页
     * @param pageSize  页大小
     * @param name      区域名称
     * @return result
     */
    @GetMapping("/search")
    @Operation(summary = "分页查询区域", description = "根据条件分页查询区域信息")
    public PageResult<RegionVo> searchList(
            @Parameter(description = "起始页") Integer pageIndex,
            @Parameter(description = "页大小") Integer pageSize,
            @Parameter(description = "区域名称") String name) {
        log.info("开始分页查询，当前页：{}，页面显示条数：{}，查询条件：区域名称-{}", pageIndex, pageSize, name);
        return regionService.searchList(pageIndex, pageSize, name);
    }

    /**
     * 新增区域
     *
     * @param regionDto 区域信息
     * @return 结果
     */
    @PostMapping
    @Operation(summary = "新增区域", description = "添加新的区域信息")
    public Boolean addRegion(@Parameter(description = "区域信息") @RequestBody RegionDto regionDto) {
        log.info("新增区域：{}", regionDto);
        return regionService.addRegion(regionDto);
    }

    /**
     * 更新区域
     *
     * @param regionId  区域id
     * @param regionDto 区域信息
     * @return 更新结果
     */
    @PutMapping("/{regionId}")
    @Operation(summary = "更新区域", description = "根据区域ID更新区域信息")
    public Boolean updateRegion(@Parameter(description = "区域ID") @PathVariable String regionId,
                                @Parameter(description = "区域信息") @RequestBody RegionDto regionDto) {
        log.info("更新区域，区域id：{}", regionId);
        return regionService.updateRegion(regionId, regionDto);
    }

    /**
     * 删除区域
     *
     * @param regionId 区域id
     * @return 删除结果
     */
    @DeleteMapping("/{regionId}")
    @Operation(summary = "删除区域", description = "根据区域ID删除区域信息")
    public Boolean deleteRegion(@Parameter(description = "区域ID") @PathVariable String regionId) {
        log.info("删除区域,区域id：{}", regionId);
        return regionService.deleteRegion(regionId);
    }
}
